其他
Amoro:高效管理湖仓的开源解决方案
背景2022年8月网易开源了 Arctic 项目,2023年8月 Arctic 项目更名为 Amoro,并发布了最新的 0.5.0 版本。本文我将带领大家从 Amoro 的定位、场景与价值、核心实现等多个方面深入了解这个开源项目。
02
项目定位
03
场景与价值湖原生数仓
当我们使用数据库,或者如 TeraData、GP 一类的 MPP 数仓,大家习惯于把他们当做一个黑盒,用标准的 SQL 或工具来使用数据,当我们把技术栈切到数据湖,会发现大家似乎习惯于把工作拆成一个个模块:数据加工,ETL 用 Spark/Flink,数据分析用 Trino、Presto 和 Impala,相比传统数仓,数据湖开放的特性和生态给业务带来了超大规模的扩展性、伸缩性和相对可控的成本,但也丧失了传统数据库和数仓开箱即用的特性。对此我们的工程师可能会想很多办法,比如自己开发一个定时调度的数据优化平台,或者把数据 layout 优化的工作直接丢给用户,这个谁用谁知道,把原先数据库和数仓内部极其复杂的数据合并和优化规则交给业务平台去做,这基本是一项不可能做好的事情,尤其当你想用新的数据湖 format 统一实时和离线数仓,数据的优化规则可能需要翻天覆地的变化。在我们和业务共创的过程中,我们看到了大量这样的需求:业务希望用一套数据湖技术栈,同时做离线数仓和实时数仓,数据可能实时摄取,也可能离线写入。既想要数据湖的低成本,高弹性,可以使用成套的数据湖工具(大数据平台),也可以有传统数据库和数仓黑盒使用的体验,业务只管使用数据:
数据湖 format 技术在国内讨论更多的是 CDC,流批一体这样的场景,立项之初这也是 Amoro 主要关注的点。但熟悉 Iceberg 的同学可能知道,Iceberg 诞生的重要背景之一,是面向 AWS S3 构建数仓的需求,Hive 在对象存储之上有诸多不足,在 Iceberg 之上都有得到妥善解决,技术点这里不多做讨论。云原生数仓可以认为是纯粹面向对象存储的数仓方案,业务往往会选择一个全新的技术栈,比如用 Iceberg 代替 Hive,用 AWS Glue 代替 HMS,而 Amoro 提供的 AMS 实现了 Iceberg 的 Restful catalog 接口;提供了数据自管理和优化的特性;提供了时效性、性能、成本的度量和管理功能,能够在云原生数仓的场景下作为 Iceberg 的最佳伴侣来使用。
核心实现
自动、异步与透明:后台持续检测文件变化,异步分布式执行优化任务,对用户透明无感 资源隔离和共享:允许资源在表级隔离和共享,以及设置资源配额 灵活可扩展的部署方式:执行节点支持多种部署方式,便捷的扩缩容
Fragment File:碎片文件,默认配置下小于 16 MB 的文件,此类文件需要及时得合并成更大的文件,以提升读取性能 Segment File:默认配置下大于 16MB 的文件,此类文件已经具备一定的大小,但还不到理想的 128MB。
Iceberg Format: 即 Apache Iceberg 原生表格式,用户可以把自己已有的 Iceberg 表导入 Amoro 集群,则可以利用 Amoro 自动管理和优化这些表,以提高表上的查询性能。同时表上已有的读写任务都不受影响。 Mixed-Iceberg Format: 构建在 Iceberg 表格式之上的一种混合表格式,它在流式更新场景下做了诸多增强,包括 MOR 性能,流式读取,实时维表关联等。 Mixed-Hive Format: 构建在 Iceberg 和 Hive 表格式之上的一种混合表格式,拥有和 Mixed-Iceberg 表一样的能力,同时支持直接从已有的 Hive 表升级而来,且兼容已有 Hive 表的读写任务。
总结
END
看到这里记得关注、点赞、转发 一键三连哦~
Amoro 0.5.0 版本发布,邀测开启试用有礼
从 Arctic 到 Amoro:我们的开源旅程和愿景Apache Iceberg + Arctic 构建云原生湖仓实战企查查基于 Apache Iceberg 与 Arctic 构建实时湖仓实践
关于 Amoro 的更多资讯可查看:官网:https://amoro.netease.com/源码:https://github.com/NetEase/amoro社群:后台回复【社群】或扫描下方二维码↓,邀你进群